const fs = require("fs");

// 读取package.json文件内容
fs.readFile("package.json", "utf8", (err, data) => {
  if (err) {
    console.error("读取package.json文件内容错误:", err);
    return;
  }

  try {
    // 将JSON字符串解析为JavaScript对象
    const packageJson = JSON.parse(data);

    // 获取当前版本号
    let currentVersion = packageJson.version;

    // 递增版本号
    const newVersion = incrementVersion(currentVersion);

    // 更新版本号
    packageJson.version = newVersion;

    // 将更新后的package.json对象转换回JSON字符串
    const updatedPackageJson = JSON.stringify(packageJson, null, 2);

    // 将更新后的内容写回package.json文件
    fs.writeFile("package.json", updatedPackageJson, "utf8", (err) => {
      if (err) {
        console.error("package.json回写错误:", err);
        return;
      }
      console.log(`package.json版本更新成功，当前版本号为: ${packageJson.version}`);
    });
  } catch (parseError) {
    console.error("Error parsing package.json:", parseError);
  }
});

// 递增版本号函数
function incrementVersion(version) {
  const parts = version.split(".");
  let idx = parts.length - 1;
  // 从最低位开始递增
  while (idx >= 0) {
    if (!isNaN(parseInt(parts[idx]))) {
      parts[idx] = (parseInt(parts[idx]) + 1).toString();
      break;
    }
    idx--;
  }
  // 递增最大值
  const num = 100
  // 如果递增后仍然小于指定值，则继续递增更高位
  if (parseInt(parts[idx]) <= num) {
    return parts.join(".");
  } else {
    return incrementVersion(parts.slice(0, idx).join(".")) + ".0";
  }
}
